package AlgoritmosGeneticos.model.impl.mutuaciones;

import utils.CustomRandom;
import AlgoritmosGeneticos.model.Individuo;
import AlgoritmosGeneticos.model.OperadorMutacion;
import AlgoritmosGeneticos.model.impl.IndividuoImpl;

public class MutacionBasica implements OperadorMutacion{

	public MutacionBasica(){
		super();
		System.out.println("Mutacion basica");
	}

	
	@Override
	public Individuo mutar(Individuo ind) {
		String numBin=ind.getNumenoBinario();
		char array[] = null;
		boolean muteed = false;
		
		
		for(int i=0; i < numBin.length(); i++){
			if( CustomRandom.getInstance().getDoubleRandom() < ind.getpMut()){
				array=numBin.toCharArray();
				muteed=true;
				if(numBin.charAt(i)=='0'){
					array[i]='1';
				} else {
					array[i]='0';
				}
			}
		}
		if(!muteed)
			return ind;
		
		String numeroMutado=new String(array);
		return new IndividuoImpl(numeroMutado,ind.getpMut());
	}

}
